#pragma once
#include <iostream>
#include <ctime>
#include <string>
#include <sys/stat.h>
#ifdef _WIN32
#include<direct.h>
#elif __linux__
#include <sys/stat.h>
#endif // _WIN32

// 这个文件中包含一些通用工具
//
namespace LoggerSpace
{
    class util
    {
    public:
        // 1、获取当前时间戳
        static time_t getCurTime()
        {
            return time(nullptr);
        }
        // 2、获取文件目录
        static std::string getDirectory(const std::string& pathname)
        {
            int pos = pathname.find_last_of("/\\");
            if (pos == std::string::npos)
                return std::string("./");
            return std::string(pathname.begin(), pathname.begin() + pos + 1);
        }
        // 3、判断路径是否存在
        static bool isExist(const std::string& pathname)
        {
            struct stat buf;
            return !(stat(pathname.c_str(), &buf) < 0);
        }
        // 4、创建一个目录
        static bool createDirectory(const std::string& pathname)
        {
            if (pathname.empty())
                return false;
            if (isExist(pathname))
                return true;
            int pos = 0;
            while (pos < pathname.size())
            {
                pos = pathname.find_first_of("/\\", pos);
                if (pos == std::string::npos)
                {
                    //mkdir(pathname.c_str(), 0777);
#ifdef _WIN32
                    if (_mkdir(pathname.c_str()) == -1)
                        return false;
#elif __linux__
                    ;
                    if (mkdir(pathname.c_str(), 0777) == -1)
                        return false;
#endif 
                    break;
                }
                // 0~pos+1的需要创建
                std::string cur = std::string(pathname.begin(), pathname.begin() + pos + 1);
                if (isExist(cur))
                {
                    pos++;
                    continue;
                }
#ifdef _WIN32
                if (_mkdir(cur.c_str()) == -1)
                    return false;
#elif __linux__
               ;
               if(mkdir(cur.c_str(),0777)==-1)
                    return false;
#endif 
                pos += 1;
            }
            return true;
        }
    };
}